package jp.java.test1.pkg20_29.test24;


public class Main {
	public static void main(String[] args) {
		Outer.Inner inner = new Outer().getInner();
		inner.hello();
		inner.bye();
	}

}
class Outer {
	interface Inner{
		public void hello();
		public void bye();
	}
	
	protected abstract class AbstractInner implements Inner {
		public void bye() {
			System.out.println("bye");
		}
	}
	
	private class InnerClass extends AbstractInner {

		@Override
		public void hello() {
			System.out.println("hello");
			
		}
	}
	
	public Inner getInner() {
		return new InnerClass();
	}
}